#include <wx/gauge.h>
#include "wxsgauge.h"

namespace {
  wxsRegisterItem<wxsGauge> Reg( _T( "Gauge" ), _T( "进度条" ), wxsTWidget, _T( "标准" ), 270 );
  WXS_ST_BEGIN( wxsGaugeStyles, _T( "" ) )
  WXS_ST( wxGA_HORIZONTAL )
  WXS_ST( wxGA_VERTICAL )
  WXS_ST( wxGA_SMOOTH )
  WXS_ST_DEFAULTS()
  WXS_ST_END()
  WXS_EV_BEGIN( wxsGaugeEvents )
  WXS_EV_END()
}

wxsGauge::wxsGauge( wxsItemResData* Data ):
  wxsWidget( Data, &Reg.Info, wxsGaugeEvents, wxsGaugeStyles ),
  Range( 100 ),
  Value( 0 ) {}

void wxsGauge::OnBuildCreatingCode() {
  switch( GetLanguage() ) {
    case wxsCPP: {
      AddHeader( _T( "<wx/gauge.h>" ), GetInfo().ClassName, hfInPCH );
      Codef( _T( "%C(%W, %I, %d, %P, %S, %T, %V, %N);\n" ), Range );
      if( Value ) {
        Codef( _T( "%ASetValue(%d);\n" ), Value );
      }
      BuildSetupWindowCode();
      return;
    }
    case wxsUnknownLanguage:
    default: {
      wxsCodeMarks::Unknown( _T( "wxsGauge::OnBuildCreatingCode" ), GetLanguage() );
    }
  }
}


wxObject* wxsGauge::OnBuildPreview( wxWindow* Parent, long Flags ) {
  wxGauge* Preview = new wxGauge( Parent, GetId(), Range, Pos( Parent ), Size( Parent ), Style() );
  if( Value ) {
    Preview->SetValue( Value );
  }
  return SetupWindow( Preview, Flags );
}


void wxsGauge::OnEnumWidgetProperties( M_Code_unused long Flags ) {
  WXS_LONG( wxsGauge, Value, _T( "Value" ), _T( "value" ), 0 )
  WXS_LONG( wxsGauge, Range, _T( "Range" ), _T( "range" ), 100 )
}
